'use strict';
// 学校管理云函数，包含增删改功能

const db = uniCloud.database();
const schoolsCollection = db.collection('schools');

exports.main = async (event, context) => {
	// 获取操作参数
	const { action, id, school } = event;
	console.log('学校管理操作', action, id, school);
	
	// 根据不同操作执行不同逻辑
	try {
		// 添加学校
		if (action === 'add') {
			if (!school || !school.name || !school.code) {
				return {
					code: -1,
					message: '学校名称和代码不能为空',
				};
			}
			
			// 检查学校代码是否已存在
			const existSchool = await schoolsCollection.where({
				code: school.code
			}).get();
			
			if (existSchool.data && existSchool.data.length > 0) {
				return {
					code: -1,
					message: '学校代码已存在',
				};
			}
			
			// 添加学校
			const result = await schoolsCollection.add({
				name: school.name,
				code: school.code,
				region: school.region || '',
				level: school.level || '',
				create_date: new Date()
			});
			
			return {
				code: 0,
				message: '添加学校成功',
				data: result
			};
		}
		
		// 更新学校
		if (action === 'update') {
			if (!id) {
				return {
					code: -1,
					message: '学校ID不能为空',
				};
			}
			
			if (!school || !school.name || !school.code) {
				return {
					code: -1,
					message: '学校名称和代码不能为空',
				};
			}
			
			// 检查学校代码是否被其他学校使用
			const existSchool = await schoolsCollection.where({
				code: school.code,
				_id: {
					$ne: id
				}
			}).get();
			
			if (existSchool.data && existSchool.data.length > 0) {
				return {
					code: -1,
					message: '学校代码已被其他学校使用',
				};
			}
			
			// 更新学校
			const result = await schoolsCollection.doc(id).update({
				name: school.name,
				code: school.code,
				region: school.region || '',
				level: school.level || '',
				update_date: new Date()
			});
			
			return {
				code: 0,
				message: '更新学校成功',
				data: result
			};
		}
		
		// 删除学校
		if (action === 'delete') {
			if (!id) {
				return {
					code: -1,
					message: '学校ID不能为空',
				};
			}
			
			// 删除学校
			const result = await schoolsCollection.doc(id).remove();
			
			return {
				code: 0,
				message: '删除学校成功',
				data: result
			};
		}
		
		// 不支持的操作
		return {
			code: -1,
			message: '不支持的操作',
		};
	} catch (error) {
		console.error('学校管理操作异常', error);
		return {
			code: -1,
			message: '操作失败：' + error.message,
		};
	}
}; 